"""
@name : 回合制对战游戏
@author : FengZT_19
@projectname: Scxuexi
"""
import random

class Character():
    # 初始化角色属性
    def __init__(self, name, sex):
        self.name = name
        self.sex = sex
        self.equip = None
        self.blood = 100
        self.room = None

    def battle(self, other):
        """
        受到攻击者，默认随机减少6-10滴血
        :param other:对手用户
        :return:
        """
        print(f'{self.name}和{other.name}正在对战'.center(20, '~'))
        print(f"{self.name}向{other.name}发起进攻")
        ATK = random.randint(6, 10)
        if other.equip == '防弹衣':
            other.blood -= ATK/2
            print(f"{other.name}使用防弹衣，免除50%伤害,扣血{ATK/2},剩余血量{other.blood}滴。")
        else:
            other.blood -= ATK
            print(f"{other.name}没有装备，扣血{ATK},剩余血量{other.blood}滴。")


class Room():
    def __init__(self, r_name):
        self.r_name = r_name
        self.r_groop = []

# 购买装备
def pay_equip(user, option):
    if option == 'y':
        print('恭喜您获得防弹衣一件，每次受伤-5滴血，免伤50%。')
        user.equip = True
    elif option == 'n':
        print('未购买防弹衣：每次受伤-10滴血。')
        user.equip = False

# 初始化房间
room1 = Room('tlbb')
room2 = Room('hzw')
room_list = [room1, room2]

def main():
    # 存放用户
    user_list = []
    # 存放用户名
    username_list = []
    while 1:
        print('欢迎来到三创对战'.center(20, '*'))
        print('1.创建用户')
        print('2.加入房间')
        print('3.购买装备')
        print('4.对战')
        print('5.退出游戏')
        option = input('请选择您要进行的操作:')
        # 1.创建用户
        if option == '1':
            username = input('请输入您要创建的用户名：')
            if username not in username_list:
                usersex = input('请输入用户性别（f-女，m-男）：')
                username = Character(username, usersex)
                # 更新用户列表
                user_list.append(username)
                username_list.append(username.name)
                print(f'成功创建用户：{username.name}')
            else:
                print('用户已存在。')
        # 2.加入房间
        elif option == '2':
            print('本系统现有以下用户：')
            for i, j in enumerate(user_list):
                print(f'{i}.用户名：{j.name}\t性别：{j.sex}')
            user_num1 = int(input('请选择您要操作的用户号：'))
            print('本系统现有以下房间：')
            print('1.tlbb')
            print('2.hzw')
            if user_num1 < len(user_list):
                room = input('请输入您要加入的房间号(1或2):')
                if room == '1':
                    # 设置用户的所属房间
                    user_list[user_num1].room = room1
                    # 判断房间是否还能加入用户
                    if len(room1.r_groop) < 2:
                        # 更新room1中的成员
                        room1.r_groop.append(user_list[user_num1])
                        print(f'欢迎用户：{user_list[user_num1].name}加入tlbb房间！')
                        # 更新用户血量
                        user_list[user_num1].blood = 100
                    else:
                        print('加入失败，该房间已满员')
                elif room == '2':
                    # 设置用户的所属房间
                    user_list[user_num1].room = room2
                    # 判断房间是否还能加入用户
                    if len(room2.r_groop) < 2:
                        # 更新room2中的成员
                        room2.r_groop.append(user_list[user_num1])
                        print(f'欢迎用户：{user_list[user_num1].name}加入hzw房间！')
                    else:
                        print('加入失败，该房间已满员')
                else:
                    print('房间不存在。')
            else:
                print('用户不存在。')
        # 3.购买装备
        elif option == '3':
            for i, j in enumerate(user_list):
                print(f'{i}.用户名：{j.name}\t性别：{j.sex}')
            user_num2 = int(input('请选择您要操作的用户号：'))
            print('本系统现有以下装备：')
            print('1.防弹衣:伤害免疫50%')
            equip_num = input('请输入您要购买的装备：')
            if equip_num == '1':
                user_list[user_num2].equip = '防弹衣'
                print(f'恭喜用户：{user_list[user_num2].name}成功购买防弹衣，每次可免疫50%伤害')
        # 4.对战
        elif option == '4':
            print('本系统现有以下用户：')
            for i, j in enumerate(user_list):
                print(f'{i}.用户名：{j.name}\t性别：{j.sex}')
            user_num3 = int(input('请选择您要操作的用户号：'))
            for i in room_list:
                # 判断用户是否加入房间
                if user_list[user_num3].room:
                    # 判断用户所在房间中是否有两个人
                    if i.r_name == user_list[user_num3].room.r_name:
                        if len(i.r_groop) == 2:
                            print(f'开始对战：{(i.r_groop[0]).name} vs {(i.r_groop[1]).name}'.center(20,'+'))
                            print('初始血量均为100，血量先耗完的用户输.')
                            # 随机选择谁进行攻击(条件：双方血量均>0。血量先耗完的用户输)
                            flag = 1
                            while flag:
                                num = random.choice([0,1])
                                (i.r_groop[num]).battle(i.r_groop[1 - num])
                                if (i.r_groop[0]).blood <= 0:
                                    print(f'恭喜{(i.r_groop[1]).name}获胜！')
                                    # 对战完后，用户自动退出房间:更新用户和房间的属性
                                    (i.r_groop[0]).room = None
                                    (i.r_groop[1]).room = None
                                    i.r_groop = []
                                    flag = 0
                                elif (i.r_groop[1]).blood <= 0:
                                    print(f'恭喜{(i.r_groop[0]).name}获胜！')
                                    # 对战完后，用户自动退出房间:更新用户和房间的属性
                                    (i.r_groop[0]).room = None
                                    (i.r_groop[1]).room = None
                                    i.r_groop = []
                                    flag = 0
                        else:
                            print('房间人数不足，无法开始对战。')
                else:
                    print(f'{user_list[user_num3].name}暂未加入房间')
        # 5.退出游戏
        elif option == '5':
            print('欢迎下次再来'.center(20, '*'))
            break
        else:
            print('请输入正确的选择（1到4）。')

main()